MinIO中的对象锁定,版本控制,保留和模式
MinIO支持一个完整的对象锁定框架,该框架提供了法律保留和保留(具有管理和合规性模式)。从金融服务到医疗保健,许多受监管行业都要求对象锁定功能。
生命周期管理是数据生态系统中越来越重要的元素。目前,数据是大多数组织的主要资产-比我们通常与大型企业关联的有形资产(火车,飞机,汽车或石油钻机)还要重要。保护这些数据并管理保护它们的时间是复杂的挑战。
MinIO现在提供了完整的生命周期管理功能套件。这包括版本控制,对象锁定和各种派生组件。每个用例都不同,我们的目标是创建软件和文档,使我们的社区放心地实现这些功能。
我们的方法模拟了亚马逊的模型。出于多种原因,这很重要。首先,对于寻求其应用程序兼容性的公司,在公共云中工作的相同S3 API调用需要在内部工作。其次,亚马逊对问题采取了审慎的方法,考虑了所有极端情况,并建立了强大的产品。我们在那里承认债务。第三,在亚马逊的领导下,该方法已被广泛采用,并且大多数问题已得到解决。
即使在亚马逊的领导下,并不是很多公司都实现了此功能。我们很高兴将我们的名字添加到列表中。考虑到我们软件的其他属性,我们认为这消除了将MinIO用作私有云对象存储的任何犹豫。
具有不变性和免受删除的保护,可确保您的数据资产安全。
版本控制
版本控制使用户可以在同一存储桶中保留对象的多个变体。版本控制提供了一种机制,可以保存,检索和还原存储在存储桶中的每个对象的每个版本。版本控制可确保对象在从应用程序到人为错误的一系列失败中保持可用。
在存储桶级别启用版本控制。启用后,MinIO会自动为对象创建一个唯一的版本ID。同一对象可以有多个版本。
版本控制的主要好处之一是可以保护覆盖或无意删除它。这是使用删除标记的概念执行的。删除版本对象后,不会永久删除它。而是创建一个删除标记,并成为对象的当前版本。读取该对象后,它将返回404 Not Found消息。
具有删除标记的对象可以还原。
同样,如果版本化的对象被覆盖,它会创建一个新版本,并成为当前版本。同样,可以根据需要还原旧版本。
为了解决这些更改,MinIO中现在有三个存储桶状态。默认为未版本控制,已启用版本控制或已暂停版本控制。请注意,一旦启用存储桶的版本控制,该操作便无法撤消-只能暂停。版本控制是存储桶中的全局设置-表示现在已对所有对象进行版本控制。
具有适当权限的用户可以暂停版本控制以停止累积对象版本。这仅适用于该存储桶,不适用于其他存储桶。有关在这种情况下会发生什么的更多信息,请参考文档。
与所有MinIO一样,可以使用MinIO Client(mc),SDK或通过命令行来应用版本控制。
版本控制是保护数据免受意外操作的最简单方法。它确实具有在对对象进行版本控制时增加存储桶大小的效果,并且可能导致对象之间的相互依赖关系数量增加以及存在隐藏的对象依赖关系的风险。这可以通过生命周期管理选择来缓解。对于大多数组织而言,这仍然是数据保护的合理权衡。
但是,还有其他用例需要另外的确定性。
对象锁定,保留和合法保留
对于那些在监管环境中运营或对保留,审计或其他合规性相关要求具有前瞻性政策的公司而言,对象锁定是一项关键功能。我们将在短期内发布最终的Cohasset报告,但有一个良好的评估结果。
这项工作建立在我们先前的功能上,即一次写入,多次读取(WORM)-适当地扩展了它。与往常一样,我们采用了极简主义的方法-确保功能完整,而又不增加功能和降低性能。
尽管有数十个用例,但可以将它们有效地减少为合法保留和保留。此外,还有治理或合规性两种模式,它们具有一定的含义。这里有一些重叠之处,因此我们将尽我们所能做到准确。
保留
保留可确保对象在一段时间内受到WORM保护(无法删除或覆盖)。可以秒,天或年表示。
保留设置在对象级别。您可以明确地或通过存储桶默认设置在对象版本上设置保留期。在存储桶级别设置的默认锁定配置不适用于以前创建的对象版本。它仅适用于之后创建的对象。当您将保留期明确地应用于对象版本时,请为该对象版本指定“保留截止日期”。“保留截止日期”设置存储在对象版本的元数据中,并在保留期到期之前保护对象版本。
使用存储桶默认设置时,未指定“保留截止日期”。而是设置一个持续时间(天数或年数),应保护存储桶中放置的每个对象版本的持续时间。将新对象放入存储桶时,通过将指定的持续时间添加到对象版本的创建时间戳中,可以为该对象版本计算“保留截止日期”。然后,该对象版本将受到完全保护,就像它在该对象版本上的保留期被明确锁定一样。
在对象版本上放置保留期限时,时间戳会存储在对象版本的元数据中,以指示保留期限何时到期。保留期到期后,可以删除对象版本,除非对该对象版本也设置了合法保留。
创建对象版本时指定的显式保留模式和期限始终会覆盖存储桶默认设置。
可以通过提交新的锁定请求来延长保留期限。
保留框架中有两种模式:
治理模式
为对象或存储桶设置保留期时,如果目标是防止对象被标准用户删除,则使用治理模式。话虽如此,有些用户将保留修改保留设置或删除对象所需的权限。这些用户将需要s3:BypassGovernanceRetention权限以及DeleteObject权限。
合规模式
法规遵从性模式更具限制性-在保留期内无法撤消。因此,当您确定不希望任何人(包括root用户)在其保留期内删除对象时,应使用“合规性”模式。
合法保留
法定保留与保留期具有相同的保护(WORM),但默认情况下它没有到期日期,也不能设置一个有效期。这是一个无限期保留,只能由授权用户删除。
组合和版本控制
尽管保留和法定保留可以防止对象被删除或覆盖,但它们可以重叠。对象版本可以具有保留权和合法保留权。保留和合法保留适用于各个对象版本。单个对象的不同版本可以具有不同的保留模式和期限。
具体来说,一个对象可以有一个保留期(称为六个月)和一个合法保留期(无限期)。即使在保留期到期之后,也无法删除对象版本,因为它仍然具有合法保留权。只有解除对该对象版本的合法保留后,才能将其删除。
尽管对象可能具有保留或合法保留,但仍可以对它们进行版本控制。对对象版本的复制操作不会将源中可能存在的保留和合法保留设置转发到目标。
以下是法律保留和保留期的快速遍历:
要使用S3对象锁,请遵循以下基本步骤:
创建一个启用了对象锁定的新存储桶。
./mc mb myminio/testbucket --with-lock
上面列出的命令创建一个支持对象锁定的存储桶。
(可选)为放置在存储桶中的对象配置默认保留期限。
/mc bucket lock myminio/testbucket governance 100d
将要锁定的对象放在存储桶中。
./mc cp /path/to/file myminio/testbucket
对您要保护的对象应用保留期,法定保留期或两者兼有。
./mc retention myminio/testbucket/file governance 1y
./mc legalhold myminio/testbucket/file on
很简单的东西。
结论
这些功能的添加为我们不断增长的企业功能套件增加了另一层。对于已经在使用MinIO的银行和医疗保健公司,这些功能在我们的Cohasset评估的支持下提供了一套额外的用例,可以与MinIO一起使用,从而扩大了我们在组织中的影响力。
我们鼓励您自己尝试这些功能。我们在这里有文档,并且我们的Slack频道始终处于打开状态。